#pragma once
#include "stdafx.h"
#include "GameModuleDependence.h"

namespace _MODULE_
{
	namespace _GAME_
	{
		class Operand
		{
		public:
			Operand(void);
			~Operand(void);

			/**
			    
			*/
			void Begin();
			bool Next();

			const _FO_GDB::GV* GetVariable();
			
		protected:

			/**
			    return return true, when a actor is need to filtered
			*/
			virtual bool ActorFiter(const _P_GAME::Actor *  ptrActor){return false;}

			/**
			    advance m_iterActor util actor is not filtered.
			*/
			void AdvanceActorIter();

			
			const _FO_GDB::GV* m_ptrGV;
			_FO_UTIL::Name m_nameData;

			_FO_UTIL::Name m_nameTag;//!< actor's tagname or pre defined id
		
		private:
			iCommonActorIterate* i_CommonActorIterate; 

		};
	}
}